//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#ifndef _CathFASTAProfile_h__
#define	_CathFASTAProfile_h__
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#include "CathCDDF.h"
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
class CathFASTAProfile {
  
  private:
    
    String*               domain;
    String*               format;
    String*               cathCode;
    
    TListE <SegmentCDDF>* segments;   
    
    String*               sequence;
    String*               secondaryStructureP;
    String*               secondaryStructureC;
    String*               residuesClassChemical;
    String*               residuesClassPhysical;
    String*               residuesMT;
    
    String*               toString;
    
  protected:
    
    void                  CleanData (void);
    
  public:
    
    CathFASTAProfile ();
    CathFASTAProfile (const CathFASTAProfile&);
    CathFASTAProfile (const CathFASTAProfile*);
    
    ~CathFASTAProfile ();

    void                  Domain (String*);
    void                  Format (String*);
    void                  CathCode (String*);
    void                  Segments (TListE <SegmentCDDF>*);   
    void                  Sequence (String*);
    void                  SecondaryStructureP (String*);
    void                  SecondaryStructureC (String*);
    void                  ResiduesClassChemical (String*);
    void                  ResiduesClassPhysical (String*);
    void                  ResiduesMT (String*);
    
    String*               Domain (void);
    String*               Format (void);
    String*               CathCode (void);
    TListE <SegmentCDDF>* Segments (void);
    String*               Sequence (void);
    String*               SecondaryStructureP (void);
    String*               SecondaryStructureC (void);
    String*               ResiduesClassChemical (void);
    String*               ResiduesClassPhysical (void);
    String*               ResiduesMT (void);
    
    bool                  ReadFromString (String*);
    bool                  ReadFromString (char*);
    
    String*               ToString (void);
    String*               ToStringSegment (void);
    String*               ToStringHeader (void);
    
    CathFASTAProfile      operator= (const CathFASTAProfile&);
    
};
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#endif
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
